/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import java.text.DateFormat
import java.text.SimpleDateFormat
/**
 *
 * @author Ewerton dos Santos de Sousa
 */
public class OperacoesComData {
    // Retorna os Meses dos Ano
    public static meses(){
        def meses = []
        meses.add('id':'1','dias':31,'mes':'01','nome':'Janeiro','nm':'Jan')
        meses.add('id':'2','dias':28,'mes':'02','nome':'Fevereiro','nm':'Fev')
        meses.add('id':'3','dias':31,'mes':'03','nome':'Março','nm':'Mar')
        meses.add('id':'4','dias':30,'mes':'04','nome':'Abril','nm':'Abr')
        meses.add('id':'5','dias':31,'mes':'05','nome':'Maio','nm':'Mai')
        meses.add('id':'6','dias':30,'mes':'06','nome':'junho','nm':'Jun')
        meses.add('id':'7','dias':31,'mes':'07','nome':'Julho','nm':'Jul')
        meses.add('id':'8','dias':31,'mes':'08','nome':'Agosto','nm':'Ago')
        meses.add('id':'9','dias':30,'mes':'09','nome':'Setembro','nm':'Set')
        meses.add('id':'10','dias':31,'mes':'10','nome':'Outubro','nm':'Out')
        meses.add('id':'11','dias':30,'mes':'11','nome':'Novembro','nm':'Nov')
        meses.add('id':'12','dias':31,'mes':'12','nome':'Dezembro','nm':'Dez')
        return meses
    }
    
    
    public getDataInicialEFinalDoMes(mes,ano) {      
        
        def meses = meses()[Integer.parseInt(mes)-1]
        def dataInicial = '01/'+meses.mes+'/'+ano
        def dataFinal = meses.dias+'/'+meses.mes+'/'+ano
        return [dataInicial:dataInicial,dataFinal:dataFinal]
        
    }


    public static ano(ano) {
        if (!ano) {
            Calendar dataAtual = Calendar.getInstance()
            String anoAtual  = dataAtual.get(Calendar.YEAR)
          
            ano = anoAtual
        }       
        return ano
    }


     public static getMesAtual(mes) {
        Calendar dataAtual = Calendar.getInstance()
        if (!mes) {
            mes = dataAtual.get(Calendar.MONTH) + 1
        }
        return   mes
    }

    // retira o mes


    public static getMes(data) {
       def mes
        if (data) {
         mes = new StringBuilder( new SimpleDateFormat("MM").format( data ))
         mes = Integer.parseInt(mes[0] + mes[1])
        }
return mes
    }


    // retorna new simple dat format
    public static getDateFormat() {
        def DateFormat df = new SimpleDateFormat("MM/dd/yyyy")
        return df
    }
    // semana maxima informe
    // def conexoesService
    public getSemanaAtualInforme(id) {
        ConexoesService conexoesService = new ConexoesService()
        def conection = conexoesService.sis()
        def sql = """
SELECT substring(a.semana,5,2) as semana
FROM datamart.tb_relatorio a
where a.id = """ + id  
        def result
        conection.eachRow(sql,{
                result = it.semana
            }
        )
        return  result
    }  
    public String getAnoAtualInforme(id) {
        ConexoesService conexoesService  = new ConexoesService()
        def ano
        def connection = conexoesService.sis()
        connection.eachRow("""
SELECT substring(a.semana for 4 from 1) as ano
FROM datamart.tb_relatorio a
where a.id = """ +id + """
""",{
                ano = it.ano
            }
        )
        return ano
    }


    // pega data e hora do sistema
    public getHoraDoSistema() {

        Calendar dataAtual = Calendar.getInstance()

        return dataAtual

    }

    // transforma Data parse em String
    public static getDataEmString(data) {
        int ano = data.get(Calendar.YEAR)
        int mes = data.get(Calendar.MONTH)+1
        int dia = data.get(Calendar.DAY_OF_MONTH)
        if (mes < 10) {
            data = dia+'/0'+mes+'/'+ano
        } else {
            data = dia+'/'+mes+'/'+ano
        }
        if (dia < 10) {
            data = '0'+data
        }

        return data

    }

// importante padrao dia/mes/ano
   public static getDateStringEmDate(data) {
        def DateFormat df = new SimpleDateFormat("dd/MM/yyyy")
        return  df.parse(data)
    }




// transformar date em String
     public static getTransformaDataEmString(data) {
       StringBuilder diaNot = new StringBuilder( new SimpleDateFormat("dd").format( data ))
       StringBuilder mesNot = new StringBuilder( new SimpleDateFormat("MM").format( data ))
       StringBuilder anoNot = new StringBuilder( new SimpleDateFormat("yyyy").format( data ))
       return diaNot +'/' + mesNot +'/' + anoNot

    }


   //









    // retorna coleção com as 53 semanas do ano


    public static getSemanasEpdemiloficasColecao(ano) {


        Collection<String> semanas = new ArrayList<String>();
        for (int i = 01; i < 10; i++) {
            semanas.add(ano+'0'+ i)
        }
        for (int i = 10; i < 53; i++) {
            semanas.add(ano+ i)
        }

return semanas
    }


// retorna data por extenso

       public static String getHoje(opcao){
        String diaf = null;
        String mesf = null;
        String retorno = null;
        Calendar calendar = new GregorianCalendar();
       Date hoje = new Date();
       calendar.setTime(hoje);
       int semana = calendar.get(Calendar.DAY_OF_WEEK);
       int mes = calendar.get(Calendar.MONTH);
       int dia = calendar.get(Calendar.DAY_OF_MONTH);
       int ano = calendar.get(Calendar.YEAR);

       // semana
       switch(semana){
        case 1: diaf = "Domingo"; break;
        case 2: diaf = "Segunda";break;
        case 3: diaf = "Terça";break;
        case 4: diaf = "Quarta";break;
        case 5: diaf = "Quinta";break;
        case 6: diaf = "Sexta";break;
        case 7: diaf = "Sábado";break;
       }
       // mês
       switch(mes) {
        case 1:  mesf = "Janeiro";break;
        case 2:  mesf = "Fevereiro";break;
        case 3:  mesf = "Março";break;
        case 4:  mesf = "Abril";break;
        case 5:  mesf = "Maio";break;
        case 6:  mesf = "Junho";break;
        case 7:  mesf = "Julho";break;
        case 8:  mesf = "Agosto";break;
        case 9:  mesf = "Setembro";break;
        case 10: mesf = "Outubro";break;
        case 11: mesf = "Novembro";break;
        case 12: mesf = "Dezembro";break;
       }
       if (opcao) {
           retorno = diaf+ ","+ dia+" de "+mesf+", de "+ano;
       } else {
           retorno = dia+" de "+mesf+", de "+ano;
       }
       
       return retorno;
     }

  




}

